/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Bitacora;

import java.util.ArrayList;
import java.io.*;

/**
 *
 * @author Karadak
 */
public class Escribir_Errores 
{
    
    public void ArchivoErrores(ArrayList lexicos, ArrayList sintacticos , ArrayList semanticos,String direccion,String salida, String nombre_archivo)
    {
        try
        {
            PHP dat = new PHP();
              // escritura de archivo de texto
            //FileWriter fichero = new FileWriter("Errores/"+nombre_archivo+"- Tabla Errores.html",true);           
            FileWriter fichero = new FileWriter(direccion+salida+"- Errores .xhtml",false);           
            PrintWriter pw = new PrintWriter(fichero);
            
             // empieza html pagina
            pw.println(dat.html1);
            pw.println(dat.head1);
            
                
            
                pw.println(dat.title1+"Pagina de informacion de errores lexicos, semanticos y sintacticos ");
                pw.println(dat.title2);
                
            pw.println(dat.head2);
                
               
                //pw.println("<BODY BGCOLOR =\"#FFF37B\" >");
                pw.println(dat.Body);
                
                pw.println(dat.marco1);
                pw.println(dat.leyenda1+"Tabla de Errores del Archivo:");
                pw.println(dat.leyenda2);
                
                
                    pw.println(dat.center1);  
                                        
                    pw.println("<h2>"+nombre_archivo);
                    pw.println("</h2>");
                    
                    
                       // Empieza la tabla de Errores
                    
                        pw.println(dat.Table);
                        
                        
                        // Errores Lexicos
                        pw.println(dat.Casilla1+"Numero: ");
                        pw.println("</th> ");
                        
                            int cont = 1;
                            //casa = datos;
                            while(cont <= (lexicos.size()+sintacticos.size()+semanticos.size()))
                            {
                                //pw.println("<TR>");
                                pw.println(dat.Casilla2+cont);
                                pw.println("</td> ");
                                cont++;
                                //casa = casa.siguiente;
                            }
                        pw.println("<tr>");
                        
                        
                        pw.println(dat.Casilla1+"Linea: ");
                        pw.println("</th> ");
                        
                            //casa = datos;
                            int lim = 0;
                            while( lim < lexicos.size())
                            {
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)lexicos.get(lim);
                                pw.println(dat.Casilla2+dato.linea);
                                pw.println("</td> ");
                                lim++;
                            }
                            lim = 0;
                            while( lim < sintacticos.size())
                            {  
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)sintacticos.get(lim);
                                pw.println(dat.Casilla2+dato.linea);
                                pw.println("</td> ");
                                lim++;
                            }
                            lim = 0;
                            while( lim < semanticos.size())
                            {
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)semanticos.get(lim);
                                pw.println(dat.Casilla2+dato.linea);
                                pw.println("</td> ");
                                lim++;
                            }
                            
                        pw.println("</tr>");
                        pw.println("<tr>");
                        
                        pw.println(dat.Casilla1+"Columna : ");
                        pw.println("</th> ");
                            lim = 0;
                            while(lim < lexicos.size())
                            {                       
                                Bitacora.Info dato = (Bitacora.Info)lexicos.get(lim);
                                pw.println(dat.Casilla2+" "+dato.columna);
                                pw.println("</td> ");
                                lim++;
                            }     
                            lim = 0;
                            while(lim < sintacticos.size())
                            {                       
                                Bitacora.Info dato = (Bitacora.Info)sintacticos.get(lim);
                                pw.println(dat.Casilla2+""+dato.columna);
                                pw.println("</td> ");
                                lim++;
                            }  
                            lim = 0;
                            while(lim < semanticos.size())
                            {
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)semanticos.get(lim);
                                pw.println(dat.Casilla2+""+dato.columna);
                                pw.println("</td> ");
                                lim++;
                            }  
                            
                        pw.println("</tr>");
                        pw.println("<tr>");
                        
                        pw.println(dat.Casilla1+"Lexema: ");
                        pw.println("</th> ");
                            lim = 0;
                            while(lim < lexicos.size())
                            {
                                Bitacora.Info dato = (Bitacora.Info)lexicos.get(lim);
                                pw.println(dat.Casilla2+dato.token);
                                pw.println("</td> ");
                                lim++;
                            }    
                            lim = 0;
                            while(lim < sintacticos.size())
                            {
                                Bitacora.Info dato = (Bitacora.Info)sintacticos.get(lim);
                                pw.println(dat.Casilla2+dato.token);
                                pw.println("</td> ");
                                lim++;
                            }  
                            lim = 0;
                            while(lim < semanticos.size())
                            {
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)semanticos.get(lim);
                                pw.println(dat.Casilla2+dato.token);
                                pw.println("</td> ");
                                lim++;
                            } 
                            pw.println("</tr>");
                             pw.println("<tr>");
                        
                        pw.println(dat.Casilla1+"Tipo Error: ");
                        pw.println("</th> ");
                        
                            //casa = datos;
                            lim = 0;
                            while( lim < lexicos.size())
                            {  
                                Bitacora.Info dato = (Bitacora.Info)lexicos.get(lim);
                                pw.println(dat.Casilla2+dato.tipo_error);
                                pw.println("</td> ");
                                lim++;
                            }
                            lim = 0;
                            while( lim < sintacticos.size())
                            {  
                                Bitacora.Info dato = (Bitacora.Info)sintacticos.get(lim);
                                pw.println(dat.Casilla2+dato.tipo_error);
                                pw.println("</td> ");
                                lim++;
                            }
                            lim = 0;
                            while( lim < semanticos.size())
                            {
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)semanticos.get(lim);
                                pw.println(dat.Casilla2+dato.tipo_error);
                                pw.println("</td> ");
                                lim++;
                            }
                            pw.println("</tr>");
                        pw.println("<tr>");
                        
                        pw.println(dat.Casilla1+"Descripcion: ");       
                        pw.println("</th> ");
                            lim = 0;
                            while(lim < lexicos.size())
                            {   
                                Bitacora.Info dato = (Bitacora.Info)lexicos.get(lim);
                                pw.println(dat.Casilla2+dato.informacion);
                                pw.println("</td> ");
                                lim++;
                            }
                             lim = 0;
                            while(lim < sintacticos.size())
                            {   
                                Bitacora.Info dato = (Bitacora.Info)sintacticos.get(lim);
                                pw.println(dat.Casilla2+dato.informacion);
                                pw.println("</td> ");
                                lim++;
                            }
                              lim = 0;
                            while(lim < semanticos.size())
                            {
                                //pw.println("<TR>");
                                Bitacora.Info dato = (Bitacora.Info)semanticos.get(lim);
                                pw.println(dat.Casilla2+dato.informacion);
                                pw.println("</td> ");
                                lim++;
                            }
                        pw.println("</tr>");
                                  
                              
                        pw.println("</table>");
                        
//                        pw.println("<h4><li> <a href="+id.getNameFile()+".php"+"><FONT COLOR=YELLOW>"+"Ir a Tabla de Tokens");
//                        pw.println("</FONT></a></li>");
//                        pw.println("<h4><li> <a href="+id.getNameFile()+"-Errores.php"+"><FONT COLOR=YELLOW>"+"Ver pagina de Errores");
//                        pw.println("</FONT></a></li>");
                        
//                        pw.println("<h4><li> <a href=index.html><FONT COLOR=YELLOW>"+"Ir a menu principal");
//                        pw.println("</FONT></a></li>");
                        
                   pw.println(dat.center2);
                   pw.println(dat.marco2);
                   pw.println(dat.cuerpo2);
                   pw.println("<p> </p>");
                   pw.println("<p> </p>");
                   
                   //pw.println(dat.head2);
           pw.println(dat.html2);  
           
           
           
           
           
           
        pw.close();            
        System.out.println("Archivo de Tabla de Errores escrito.....");
        }
        catch(Exception e)
        {
            System.out.println("Error en escribir archivo de Errores: "+e);
        }
    }
     

}
